// app.js
App({
  globalData: {
    user: null
  },

/**
 * 用户信息对象
 * @typedef {Object} UserInfo
 * @property {string|number} id - 用户ID
 * @property {string} name - 用户名称
 * @property {string} avatar - 用户头像URL
 * @property {string} token - 身份验证令牌
 * @property {string} phone - 手机号码
 * @property {boolean} isLoggedIn - 登录状态
 */
/**
 * 获取用户信息
 * @returns {UserInfo} 用户信息对象
 */
  // 获取用户信息的全局方法
  getUserInfo() {
    return this.globalData.user;
  },
  
/**
 * 设置用户信息
 * @param {Partial<UserInfo>} userInfo - 需要更新的用户信息字段
 */

  // 设置用户信息的全局方法
  setUserInfo(userInfo) {

    if (typeof userInfo !== 'object' || userInfo === null) {
      console.error('setUserInfo参数必须是对象');
      return;
    }

    this.globalData.user = {
      ...this.globalData.user,
      ...userInfo
    };
    
    // 如果提供了token，更新登录状态
    if (userInfo.token) {
      this.globalData.user.isLoggedIn = true;
    }
    
    // 如果清除token，重置登录状态
    if (userInfo.token === null) {
      this.globalData.user.isLoggedIn = false;
    }
    
    // 如果提供了新的用户ID，更新用户ID
    if (userInfo.id) {
      this.globalData.user.id = userInfo.id;
    }
    
    // 保存到本地存储（可选）
    wx.setStorageSync('user', this.globalData.user);
  },
  
  // 检查用户是否登录的全局方法
  isUserLoggedIn() {
    return this.globalData.user.isLoggedIn;
  },
  
  // 退出登录的全局方法
  logout() {
    this.globalData.user = {
      id: null,          // 用户ID
      name: null,        // 用户名称
      avatar: null,      // 用户头像
      token: null,       // 用户登录令牌
      phone: null,       // 用户手机号码
      isLoggedIn: false  // 登录状态标记
    };
    wx.removeStorageSync('user');
  },
  //重新编译时清除storage里面的缓存数据
  onLaunch: function(){
    wx.clearStorageSync()
  }
})
